<template>
  <div class="cart-sku" ref="target">
    <div class="attrs" @click="toggle()">
      <span class="ellipsis">{{attrsText}}</span>
      <i class="iconfont icon-angle-down"></i>
    </div>
    <div class="layer" v-if="visible">
        <div class="loading" v-if="loading"></div>
         <GoodsSku :goods="goods" v-else :skuId="skuId" @change="change"></GoodsSku>
          <XtxButton v-if="!loading" type="primary" size="mini" style="margin-left:60px" @click="submit">确认</XtxButton>
      
    </div>
  </div>
</template>
<script>
import {reactive, ref} from "vue"
import { onClickOutside } from '@vueuse/core'
import {goodsSku}from "@/api/cart"
import GoodsSku from "@/views/goods/components/goods-sku.vue"
export default {
  name: 'CartSku',
  props:{
attrsText:{
    type:String,
    default:''
},
skuId:{
    type:String,
    default:''
}
  },
  components:{
    GoodsSku
  },
setup(props,{emit}){
   const visible=ref(false)
   const goods=ref(null)
   const loading=ref(false)
   const open=()=>{
     
    visible.value=true
    loading.value=true
  
    //获取商品数据
    goodsSku(props.skuId).then(data=>{goods.value=data.result  
    loading.value=false})
   
   }
   const close=()=>{
    visible.value=false
   }
   const toggle=()=>{
    visible.value ? close() : open()
    // console.log(visible.value);
   }
   const target=ref()
     onClickOutside(target, () => close())
     const currskuGoods=ref(null)
     const change=(change)=>{
      console.log(change);
      currskuGoods.value=change
      console.log(currskuGoods);
     }
const submit=()=>{
  if(currskuGoods.value && currskuGoods.value.skuId && currskuGoods.value.skuId !==props.skuId)
  //将选中的skuId传给父组件
  console.log(currskuGoods.value);
  emit("change",currskuGoods)
  close()
}
  return{visible,toggle,target,goods,loading,change,submit}
}
 
}
</script>
<style scoped lang="less">
.cart-sku {
  height: 28px;
  border: 1px solid #f5f5f5;
  padding: 0 6px;
  position: relative;
  margin-top: 10px;
  display:inline-block;
  .attrs {
    line-height: 24px;
    display: flex;
    span {
      max-width: 230px;
      font-size: 14px;
      color: #999;
    }
    i {
      margin-left: 5px;
      font-size: 14px;
    }
  }
  .layer {
    position: absolute;
    left: -1px;
    top: 40px;
    z-index: 10;
    width: 400px;
    border: 1px solid @xtxColor;
    box-shadow: 2px 2px 4px lighten(@xtxColor,50%);
    background: #fff;
    border-radius: 4px;
    font-size: 14px;
    padding: 20px;
    &::before {
      content: "";
      width: 12px;
      height: 12px;
      border-left: 1px solid @xtxColor;
      border-top: 1px solid @xtxColor;
      position: absolute;
      left: 12px;
      top: -8px;
      background: #fff;
      transform: scale(.8,1) rotate(45deg);
    }
    .loading {
      height: 224px;
      background: url(../../../assets/images/loading.gif) no-repeat center;
    }
  }
}
</style>